package main

import (
	"errors"
	"net/http"
	"net/rpc"
)

// 结构体，用于注册的
type Arith struct {
}

// 声明参数结构体
type ArithRequest struct {
	A int
	B int
}

// 返回给客户端的结果
type ArithResponse struct {
	//乘积
	Pro int
	//商
	Quo int
	//余数
	Rem int
}

// 乘积
func (a Arith) Multiply(req ArithRequest, res *ArithResponse) error {
	res.Pro = req.A * req.B
	return nil
}

//商和余数

func (a Arith) Divide(req ArithRequest, res *ArithResponse) error {
	if req.B == 0 {
		return errors.New("除数不能为0")
	}

	//商
	res.Quo = req.A / req.B

	//余数
	res.Rem = req.A % req.B
	return nil
}

// 主函数
func main() {
	//1. 注册服务
	server := new(Arith)
	// 注册一个Arith服务
	rpc.Register(server)

	//2.服务处理绑定到http协议上
	rpc.HandleHTTP()

	//3.监听服务---->把这个服务部署到8000端口，客户端来这个端口请求服务就行了
	http.ListenAndServe(":8000", nil)
}
